Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Δηλώσεις μεταβλητών σε WEB pages

Îåêßíçóå áðü ôï ìÝëïò anthou. Τελευταία δημοσίευση από το μέλος anthou στις 08-01-2013, 21:52. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-01-2013, 19:07 71864

    Δηλώσεις μεταβλητών σε WEB pages

    Καλησπέρα
    Σε σελίδες  χχχ.aspx θέλω να δηλώσω μεταβλήτες  οι οποίες να παρακολουθούν  τις τιμές σε όλη την σελίδα και τις είχα δηλώσει ως εξής :

    Partial Public Class webform008
    Dim product,timi,axia,total_axia,fpa  as decimal

    Rrivate Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Εδώ διαβάζει ττιμές απο τον sql και γεμίζει τις μεταβλητές

    end sub

    private sub ipologismos

     product=axia*posotita
    fpa=(product*fpa)/100
    total_axia=product+fpa
    end sub
    Η εφαρμογή λειτουργεί κανονικά στο site και βγάζει σωστά αποτελέσματα
    Το πρόβλημα δημιουργείται οταν δύο χρήστες έχουν συνδεθεί ταυτόχρονα στην ιδια σελίδα αλλά με διαφορετικό pc Τότε τα αποτελέσματα του πρώτου τα εμφανίζει στον δευτερο.
    Πως θα πρέπει να δηλωθούν οι μεταβλητές ώστε να έχοθν scope  σε όλη την σελίδα και ταυτόχρονα να αντιστοιχούν αποκλειστικά σε κάθε χρήστη
    Μήπως πρέπει να τις δηλώσω σε session ;
    Υπάρχει κάποιος περιορισμός  στα session ;
    Υπάρχει κάποιος άλλος τρόπος να δηλωθούν και ποιός είναι ο σωστός τρόπος  ;
    Ευχαριστώ

  •  06-01-2013, 20:50 71865 σε απάντηση της 71864

    Απ: Δηλώσεις μεταβλητών σε WEB pages

    Καλησπέρα,

    Για να συμβεί το σενάριο που περιγράφεις θα πρέπει οι μεταβλητές της κλάσης να είναι shared, κάτι που δεν ισχύει σύμφωνα με τον κώδικα σου.
    Μήπως υπάρχει κάτι μέσα στον κώδικα του Page_Load(...) που δεν κάνει σωστά το init των μεταβλητών;

    Τάσος Καραγιάννης

    Baby debugging steps...
  •  06-01-2013, 21:07 71867 σε απάντηση της 71865

    Απ: Δηλώσεις μεταβλητών σε WEB pages

    Δίκιο έχεις φίλε μου
    Στην αρχή τις είχα δηλώσει Public share ...  αντι DIm
    Νόμιζα οτι με το Public θα είχα scope σε όλη την σελίδα
    Βλέποντας το πρόβλημα άλλαξα και τις δήλωσα με το   DIM 
    Δεν ξέρω αν έτσι καλύπτο scope  σε όλη την σελίδα
    Αυτό που ζητώ να λειτουγεί σε όλη την σελίδα και να λειτουργεί για κάθε χρήστη ξεχωριστά


  •  06-01-2013, 22:25 71868 σε απάντηση της 71867

    Απ: Δηλώσεις μεταβλητών σε WEB pages

    Μία μεταβλητή φαίνεται μέσα στην κλάση ανεξάρτητα με το αν είναι Public ή Private (δλδ Dim). Το scope αυτό αφορά αν οι μεταβλητές είναι προσβάσιμες από σημεία του κώδικα έξω από την κλάση.
    Αν είναι Private / Dim έχεις πρόσβαση μόνο στο code behind, ενώ αν είναι Protected ή Public θα μπορείς να την χρησιμοποιήσεις και στο .aspx αρχείο.

    Αν μία μεταβλητή είναι shared σημαίνει πως είναι η ίδια για όλα τα instances της κλάσης, για αυτό όταν είχες το Shared δημιουργόταν το πρόβλημα που ανέφερες.
    Χωρίς το Shared οι μεταβλητές θα έχουν διαφορετική τιμή για κάθε χρήστη. Για την ακρίβεια, κάθε φορά που φορτώνει η σελίδα δημιουργείται ένα νέο instance της κλάσης webform008 και οι μεταβλητές πρέπει να αρχικοποιηθούν, κάτι που γίνεται στο Page_Load. Αν θέλεις να διαβάζεις μία φορα τις τιμές αυτές από τη ΒΔ, και όσο ο χρήστης είναι logged in να υπάρχουν διαθέσιμες τότε θα πρέπει να χρησιμοποιήσεις Session.

    Τάσος Καραγιάννης

    Baby debugging steps...
  •  06-01-2013, 22:34 71869 σε απάντηση της 71868

    Απ: Δηλώσεις μεταβλητών σε WEB pages

    Αρα για κάθε μεταβλητή που θα είναι ορατή σε ολόκληρη την σελίδα και για κάθε χρήστη χωριστά η καλύτερη λύση είναι η χρήση Session
    Υπάρχει κάποιος περιορισμός στην χρήση του Session ;
  •  06-01-2013, 22:47 71870 σε απάντηση της 71869

    Απ: Δηλώσεις μεταβλητών σε WEB pages

    Στο Session μπορείς να αποθηκεύσεις ότι μεταβλητές ή objects θέλεις.
    Αν αποθηκεύσεις πάρα πολλά πράγματα στο Session (π.χ. μεγάλα DataTables / DataSets) θα καταναλώνεις πολύ μνήμη στον IIS, το οποίο μπορεί να οδηγήσει σε μειωμένο performance της εφαρμογής σου.

    Επίσης. το Session μπορεί να χαθεί, αν π.χ. κάνει restart το application pool στον IIS, οπότε καλό θα ήταν να έχεις έναν έλεγχο για το αν το Session έχει τις τιμές που θέλεις. Θα μπορούσες, αν σε βολεύει, να χρησιμοποιήσεις το Session_Start event στο Global.asax.

    Τάσος Καραγιάννης

    Baby debugging steps...
  •  06-01-2013, 23:01 71871 σε απάντηση της 71870

    Απ: Δηλώσεις μεταβλητών σε WEB pages

    Είναι γύρω στις 10 μεταβλητές που διαβάζει απο την βάση και κάνει υπολογισμούς σε διάφορα σημεία της σελίδας
    Οπότε το πρόβλημα είναι μόνο σε περίπτωση διακοπής
    Υπάρχει κάποιος τρόπος αφού διαβάσω τις τιμές απο την βάση στο  φόρτωμα της σελίδος, ο χρήστης να εκτελεί τους υπολογισμούς χωρίς να χάσει τα δεδομένα ;

  •  08-01-2013, 00:32 71875 σε απάντηση της 71871

    Απ: Δηλώσεις μεταβλητών σε WEB pages

    Οι υπολογισμοί που εκτελούνται; Θέλεις να δώσεις ένα παράδειγμα κώδικα;

    Τάσος Καραγιάννης

    Baby debugging steps...
  •  08-01-2013, 21:52 71878 σε απάντηση της 71875

    Απ: Δηλώσεις μεταβλητών σε WEB pages

    Εκανα δοκιμή με session  και απο οτι βλέπω δουλεύει σωστά
    Οι υπολογισμοί στη private sub ipologismoi (όπως βλέπεις παραπάνω)
      τις εμφανίζω στην   private sub emfanish
      και κάνω save  σε  private sub oloklirosi
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems